﻿using System;

namespace SeoulOpenApi.LostArticle
{
	/// <summary>
	/// 서울시 Open API 분실물 정보
	/// </summary>
	public class LostArticleService : BaseService
	{
		/// <summary>
		/// 서울시 API 서비스
		/// </summary>
		public LostArticleService() : this(null, null) { }

		/// <summary>
		/// 서울시 API 서비스
		/// </summary>
		/// <param name="userId">서울시 API접속 ID</param>
		/// <param name="authKey">서울시로부터 발급받은 인증키</param>
		/// <remarks>인증키 발급: http://mobile.openapi.seoul.go.kr/ </remarks>
		public LostArticleService(string userId, string authKey)
		{
			base.UserID = userId;
			base.AuthKey = authKey;
		}

		/// <summary>
		/// 서비스 항목에 따라 데이터 가져오기
		/// </summary>
		/// <param name="name">서비스명</param>
		/// <returns></returns>
		protected override SoapData getSoapData(string name)
		{
			var soap = new SoapData { Address = new Uri(ApiUrlPrefix + "LostArticleService?wsdl", UriKind.Absolute) };
			switch (name)
			{
				case "searchLostArticleList":
					soap.Name = "searchLostArticleList";
					soap.Description = "보관 분실물 목록 조회";
					soap.SoapBody = "<ns:searchLostArticleList xmlns:ns='http://service.lost.openapi.ubizvalley.com'>" +
									"<ns:code>{0}</ns:code>" + // 변수: 분류
									"<ns:sortItem>{1}</ns:sortItem>" + // 변수: 정렬기준항목
									"<ns:sortStd>{2}</ns:sortStd>" + // 변수: 정렬기준
									"<ns:cPage>{3}</ns:cPage>" + // 변수: 현재페이지
									"<ns:pageSize>{4}</ns:pageSize>" + // 변수: 한페이지ROW수
									"</ns:searchLostArticleList>";
					break;
				case "searchLostArticleCateList":
					soap.Name = "searchLostArticleCateList";
					soap.Description = "보관 분실물 검색";
					soap.SoapBody = "<ns:searchLostArticleCateList xmlns:ns='http://service.lost.openapi.ubizvalley.com'>" +
									"<ns:code>{0}</ns:code>" + // 변수: 분류
									"<ns:cate>{1}</ns:cate>" + // 변수: 습득 물품유형
									"<ns:sortItem>{2}</ns:sortItem>" + // 변수: 정렬기준항목
									"<ns:sortStd>{3}</ns:sortStd>" + // 변수: 정렬기준
									"<ns:cPage>{4}</ns:cPage>" + // 변수: 현재페이지
									"<ns:pageSize>{5}</ns:pageSize>" + // 변수: 한페이지ROW수
									"</ns:searchLostArticleCateList>";
					break;
				case "getLostArticleInfo":
					soap.Name = "getLostArticleInfo";
					soap.Description = "보관 분실물 정보";
					soap.SoapBody = "<ns:getLostArticleInfo xmlns:ns='http://service.lost.openapi.ubizvalley.com'>" +
									"<ns:id>{0}</ns:id>" + // 변수: 분실물ID
									"</ns:getLostArticleInfo>";
					break;
				case "getLostArticleImageInfo":
					soap.Name = "getLostArticleImageInfo";
					soap.Description = "보관 분실물 사진 이미지";
					soap.SoapBody = "<ns:getLostArticleImageInfo xmlns:ns='http://service.lost.openapi.ubizvalley.com'>" +
									"<ns:id>{0}</ns:id>" + // 변수: 분실물ID
									"</ns:getLostArticleImageInfo>";
					break;
			}
			// 해당 서비스가 없는 경우
			if (String.IsNullOrEmpty(soap.Name))
				throw new Exception(name + " not found.");

			return soap;
		}
	}
}
